Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する #AWSreInvent
クラウド事業本部コンサルティング部の石川です。本日は、Amazon S3 Tables の Iceberg テーブルに Amazon QuickSight から可視化してみます。クエリを実行するIcebergテーブルは、以前のブログで作成したものを用います。
Amazon QuickSight からアクセスの概要
Amazon QuickSight からAmazon S3 Tables の Iceberg テーブルは、直接参照できないためリソースリンクを作成します。リソースリンクというのがデータベースの代わりになるものだとイメージしてください。
また、Amazon QuickSight サービスロール(aws-quicksight-service-role-v0
)にIAM権限付与しますが、実際のリソースリンクやテーブルにアクセスするのは、Amazon QuickSight 管理者ユーザーの ARNとなります。そのため、Lake Formation アクセス許可は、Amazon QuickSight 管理者ユーザーとなります。
Lake Formation の Resource link を作成
Lake Formation コンソールからDatabase(Resource link)を作成します。
Resource Linkを選択して、Resource Link nameを指定します。後は、デフォルトやプルダウンから設定できます。
Databaseの一覧に作成したResource Linkが表示されます。
Amazon QuickSight からアクセスする権限を設定する
Amazon QuickSight から S3 Tablesの Iceberg テーブルに参照するためには、Amazon QuickSight サービスロール(aws-quicksight-service-role-v0
)、Amazon QuickSight 管理者ユーザーにアクセス許可を付与し、アクセスするテーブルに対する Lake Formation アクセス許可を付与する必要があります。
Amazon QuickSight サービスロールにIAMポリシーを追加
Amazon QuickSight が S3 Tablesのデータソースにアクセスできるようにデフォルトのロールaws-quicksight-service-role-v0
に以下のIAMポリシー(インラインポリシー)を追加を追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "glue:GetCatalog",
"Resource": "*"
}
]
}
上記の通り、S3 Tablesに対するアクセスを付与するのではなく、Glue Catalogに関する権限を付与するのみで、実際の権限付与はLake Formation アクセス許可を付与することになります。
また、QuickSightを使い慣れている方ですと、QuickSightの[セキュリティとアクセス許可]で設定するのではないかと考えるかもしれません。将来的にはそのように変更される可能性もあります。
アクセスするテーブルに対する Lake Formation アクセス許可を付与
AWSCLIコマンドを実行して Amazon QuickSight 管理者ユーザーの ARN を探します。
$ aws quicksight list-users --aws-account-id 123456789012 --namespace default --region us-east-1
{
"UserList": [
{
"Arn": "arn:aws:quicksight:us-east-1:517444948157:user/default/cm-ishikawa.satoru/cm-ishikawa.satoru",
"UserName": "cm-ishikawa.satoru/cm-ishikawa.satoru",
"Email": "[email protected]",
"Role": "ADMIN",
"IdentityType": "IAM",
"Active": true,
"PrincipalId": "federated/iam/AROAIQYDPIIE4D75QUZEM:cm-ishikawa.satoru"
}
],
"Status": 200,
"RequestId": "f52930b1-8e6e-4a68-92e1-c18819df05f6"
}
Database(Resource link)の権限付与
作成したDatabase(Resource link)に対して権限を付与します。
実際のリソースリンクやテーブルにアクセスするのは、先ほどコマンド実行して探した Amazon QuickSight 管理者ユーザーとなります。そのため、「SAML users and groups」を選択して、Lake Formation アクセス許可は、Amazon QuickSight 管理者ユーザーの ARNとなります。
ここでは、Database(Resource link)に対して、Describeのみを付与します。
Database(Resource link)内のテーブル
次にDatabase(Resource link)内のテーブルに対して権限付与します。
ここでは、Database(Resource link)内のすべてのテーブルに対してテーブル権限のすべてを付与します。
QuickSightのデータセットの作成と可視化
権限の付与が終わったので、データセットを作成します。データセットは、S3 TablesではなくAthenaです。
任意のデータソース名を入力して、[データソースを作成]を押します。
データベースのところに、手順の最初に作成したリソースリンクを指定すると、テーブルの一覧が表示されます。
今回は、レコード数が多いため「データクエリを直接実行」を選択して、[Visualize]を押します。
後は、普通にQuickSightのビジュアルを作成できます。
最後に
Amazon S3 Tables の Iceberg テーブルを Amazon QuickSight で可視化する方法について、詳細なステップバイステップの手順を紹介しました。この過程では、Lake Formation でのリソースリンクの作成、必要な権限の設定、そして QuickSight でのデータセット作成と可視化までを網羅しています。この方法を使うことで、S3 Tables に格納された大規模なデータセットを効率的に分析し、視覚化することが可能になります。ただし、設定には複数のステップが必要であり、特に権限の設定には注意が必要です。しかし、一度設定が完了すれば、QuickSight の強力な可視化機能を活用して、Iceberg テーブルのデータを簡単に探索し、インサイトを得ることができます。